字典
字典(dict)
字典是无序的,可变的数据类型
作用:用于存储数据,可以存储大量数据
和列表的区别:字典比列表快,将数据和数据之间进行关联
定义一个字典:
dic = {"a":1,"b":2,"c":3}
字典中逗号分隔的叫做一个元素 键:值 (其他语言中叫键值对)
字典中的键:可哈希(不可变的数据类型) --避免哈希冲突使用开放寻址法
键要求是唯一的,如果有重复,后边的值将覆盖前边的值
值:不可哈希(可变的数据类型),可以任意类型
1.增
dic = {"a":1,"b":2,"c":3}
#dic[键] = 值
例:
dic["d"] = 4
print(dic) #{'a': 1, 'b': 2, 'c': 3, 'd': 4}
#dic.setdefault(键,值)
例:
dic.setdefault("d",4)
print(dic) #{'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 执行程序:1.先拿新的键在字典中进行查询
# 2.如果存在不添加,不存在执行添加
2.删
dic = {"a":1,"b":2,"c":3}
#del dic[键]
例:
del dic["a"]
print(dic) #{'b': 2, 'c': 3}
#del.pop(键)
例:
dic.pop("a")
print(dic) #{'b': 2, 'c': 3}
#del.clear() --清空
例:
dic.clear()
print(dic) #{}
3.改
dic = {"a":1,"b":2,"c":3}
#dic[键] = 值 字典中没有某个键值对时就是添加,键存在于字典中就是修改
-- 有则改,无则加
例:
dic["c"] = 4
print(dic) #{'a': 1, 'b': 2, 'c': 4}
#dic.update(要更新的字典) 括号中的字典级别要高于前面的字典级别
例:
dic.update({"d":4,"e":5})
print(dic) #{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dic1 = {"d":4,"e":5}
dic.update(dic1)
print(dic1) #{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
4.查
dic = {"a":1,"b":2,"c":3}
#使用for循环
for i in dic:
print(i) # a
b
c
#dic.get(键) #通过键获取值,不存在于字典中则返回 None
例:
print(dic.get("a")) # 1
#dic[键] #通过键获取值,不存在于字典中则报错
print(dic["a"]) # 1
5.其他操作
#获取所有键值对
for i in dic:
print(i,dic.get(i))
dic = {"a":1,"b":2,"c":3}
获取键和值,支持循环,不支持索引
#获取键
print(dic.keys())
#dict_keys(['a', 'b', 'c']) --获取字典中所有键并形成高仿列表
#获取值
print(dic.values())
#dict_values([1, 2, 3]) --获取字典中所有值并形成高仿列表
#获取所有键值对
print(dic.items())
#dict_items([('a', 1), ('b', 2), ('c', 3)]) --以元组形式存 放在高仿列表中
for i in dic.items():
print(i[0],i[1])
#获取字典中的所有的值并形成列表
print(list(dic.values())) #[1,2,3]
6.解构
a = 10
b = 20
a,b = b,a
print(a,b)
#除了布尔值都可以结构
a = 1,2 #本质上时一个元组
print(a)
a,b = [1,2]
print(a,b)
a,b = (3,4)
print(a,b)
a,_,b = (3,4,5)
print(a,b) #等号后边的值和前边的变量名要一一对应
a,b = '12'
print(a,b)
a,b = {"a":1,"b":2}
print(a,b) # a b #获取到的是键
#循环字典获取键和值
for k,v in dic.items():
print(k,v)
7.字典的嵌套
#查找的时候一层一层的通过键进行查找
dic = {'name':'汪峰','age':48,'wife':[{'name':'国际章','age':38}],'children':['第一个熊孩子','第二个熊孩子']}
获取国际章
print(dic[wife][0]['name'])